//////////////////////////////////////////////////////////////////
// qTip - CSS Tool Tips - by Craig Erskine
// http://qrayg.com | http://solardreamstudios.com
//
// Inspired by code from Travis Beckham
// http://www.squidfingers.com | http://www.podlob.com
//////////////////////////////////////////////////////////////////

var qTipTag = "a"; //Which tag do you want to qTip-ize? Keep it lowercase!//
var qTipX = -30; //This is qTip's X offset//
var qTipY = 25; //This is qTip's Y offset//



//There's No need to edit anything below this line//
tooltip = {
    name : "qTip",
    offsetX : qTipX,
    offsetY : qTipY,
    tip : null,
    pinned: false,
    showing: false,
    sticking: false
}

tooltip.init = function ()
{
    var tipNameSpaceURI = "http://www.w3.org/1999/xhtml";
    if ( !tipContainerID )
    { var tipContainerID = "qTip";}
    var tipContainer = document.getElementById(tipContainerID);

    if ( !tipContainer )
    {
        tipContainer =
        document.createElementNS ? document.createElementNS(tipNameSpaceURI, "div") : document.createElement("div");
        tipContainer.setAttribute("id", tipContainerID);
        document.getElementsByTagName("body").item(0).appendChild(tipContainer);
    }

    if ( !document.getElementById ) return;
    this.tip = document.getElementById(this.name);
    if ( this.tip )
    {
        document.onmousemove = function ( evt )
        {
            tooltip.move(evt)
        };
    }

    var a, sTitle;
    var anchors = document.getElementsByTagName(qTipTag);

    for ( var i = 0; i < anchors.length; i ++ )
    {
        a = anchors[i];
        sTitle = a.getAttribute("title");
        if ( sTitle )
        {
            a.setAttribute("tiptitle", sTitle);
            a.removeAttribute("title");
            a.onmouseover = function()
            {tooltip.show(this.getAttribute('tiptitle'))};
            a.onmouseout = function()
            {tooltip.hide()};
            a.onclick = function( evt )
            {
                tooltip.pin(evt);
            };
        }
    }
}

tooltip.pin = function( evt )
{

    if ( evt.metaKey || evt.ctrlKey || this.sticking )
    {
        this.sticking = !this.sticking;
    }


    if ( !this.keepOpen )
    {
        this.keepOpen = true;
        document.onclick = function( evt )
        {
            tooltip.pin(evt);
        }        
    }
    else if(!this.sticking)
    {
        this.keepOpen = false;
        tooltip.hide();
        document.onclick = null;
    }
    evt.stopPropagation();
    evt.preventDefault();
}

tooltip.move = function ( evt )
{
    if ( this.sticking )
    {
        return;
    }
    var x = 0, y = 0;
    if ( document.all )
    {//IE
        x = (document.documentElement && document.documentElement.scrollLeft)
            ? document.documentElement.scrollLeft
            : document.body.scrollLeft;
        y = (document.documentElement && document.documentElement.scrollTop)
            ? document.documentElement.scrollTop
            : document.body.scrollTop;
        x += window.event.clientX;
        y += window.event.clientY;

    }
    else
    {//Good Browsers
        x = evt.pageX;
        y = evt.pageY;
    }
    this.tip.style.left = (x + this.offsetX) + "px";
    this.tip.style.top = (y + this.offsetY) + "px";
}

tooltip.show = function ( text )
{
    if ( !this.tip || this.sticking ) return;
    this.keepOpen = false;
    this.tip.innerHTML = text;
    this.tip.style.display = "block";
    this.showing = true;

}

tooltip.hide = function ()
{

    if ( !this.tip || this.sticking ) return;
    if ( this.keepOpen ) return;
    this.tip.innerHTML = "";
    this.tip.style.display = "none";
    this.showing = false;

}

window.onload = function ()
{
    tooltip.init();
}